package MDoc;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

/**
 *
 * @author mx109
 * Klasa dokumentu która będzie dziedziczona przez wszystkie rodzaje dokumentów
 * Nie będzie interfejsem ze względu na opcje zapisu wywoływane z klasy statycznej
 */
public abstract class MgDoc {
    protected MgList MgList = new MgList();
    ArrayList<StringPair>List = new ArrayList<>();
    public String Nazwa = "";
    public String Skrot = "";
    public String DaneFirmy = "Firma Usługowo Handlowa\nul Handlowa 12\n28-300 Jędrzejów";
    public String NrDokumentu = "Uzupelnic";
    public String NrEgzemplarza = "1 z 3";
    public String Data = MgDoc.getDateTime(); 
    
     static private String getDateTime() {
        DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
        Date date = new Date();
        return dateFormat.format(date);
    }
    
    void save(File file){ //zapis dokumentu do pliku z późniejszą możliwością odczytu - chyba będzie to zrobione serializacją
    }
    
    public void setMgList(MgList List){
        this.MgList.List=List.List;
        this.MgList.kosztUboczny=List.kosztUboczny;
    }
    
    public MgList getMgList(){
        return MgList;
    }
    
    public void setKosztUboczny(double KosztUboczny){
        this.MgList.kosztUboczny=KosztUboczny;
    }
    
    public double getKosztUboczny(){
        return MgList.kosztUboczny;
    }
    
    public MgList addItemToList(MgListObj item){
        MgList.List.add(item);
        return MgList;
    }
    
    public void savePDF(File file) throws DocumentException, FileNotFoundException{//zapis dokumentu w postaci pdf
        Document doc  = new Document();
        PdfWriter.getInstance(doc,new FileOutputStream(file.getPath()));
        doc.open();  
        
        
        doc.add(MgTableFactory.getHeadTable(this));
        
        doc.add(new Phrase("\n\n"));
        addRest(doc);
        doc.close();
    }
    
    abstract void addRest(Document doc);
    
    abstract public boolean checkThisDoc();
    
    protected static boolean isNullOrEmpty(String s) {
        return s == null || s.trim().length() <= 0;
    }
    
}